💡 AI 인사이트

🤖 AI가 여기에 결과를 출력합니다...

댓글 커뮤니티

쿠팡이벤트

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

검색

    로딩 중이에요... 🐣

    [코담] 웹개발·실전 프로젝트·AI까지, 파이썬·장고의 모든것을 담아낸 강의와 개발 노트

    7. MySQL 서버 설치 | ✅ 저자: 이유정(박사)

    1. MySQL 서버 설치 & 기초 설정 WSL(Ubuntu)
    sudo apt update
    sudo apt install -y mysql-server mysql-client
    

    macOS (Homebrew)

    # Homebrew 업데이트
    brew update
    
    # MySQL 설치
    brew install mysql
    
    # 부팅 시 자동 시작 설정 (선택)
    brew services start mysql
    

    MySQL 서비스 시작 WSL(Ubuntu)

    sudo service mysql start
    

    macOS

    # 실행 중인지 확인
    brew services list
    
    # 시작
    brew services start mysql
    
    1. 초기 보안 설정 실행: 명령어 같음
    sudo mysql_secure_installation
    
    • 비밀번호 복잡도 정책 선택 – 비밀번호의 최소 강도(정책)를 정하는 단계입니다.
      – 0: 검증 안 함, 1: 보통, 2: 강력 1
    • Change the root password? [Y/n] y – 루트(root) 계정의 비밀번호를 변경하시겠습니까?
    • Remove anonymous users? [Y/n] y – 익명(anonymous) 사용자를 제거하시겠습니까?
      (비밀번호 없이 접속 가능한 기본 테스트 계정)
    • Disallow root login remotely? [Y/n] y – 원격(reymote)에서의 root 로그인(접속)을 금지하시겠습니까?
    • Remove test database and access to it? [Y/n] y – test라는 이름의 기본 테스트 데이터베이스와 그 접근 권한을 제거하시겠습니까?
    • Reload privilege tables now? [Y/n] y – 변경된 권한 테이블을 즉시 다시 불러오시겠습니까? (지금 바로 반영)

    1. 루트 계정 비밀번호 설정
    sudo mysql 
    

    루트(root) 계정에 비밀번호 설정

    ALTER USER 'root'@'localhost'
      IDENTIFIED WITH mysql_native_password
      BY '원하는StrongPass!123';
    FLUSH PRIVILEGES;
    

    (선택) SET GLOBAL validate_password.policy = LOW; 을 먼저 해두면 약한 비밀번호도 통과시킬 수 있습니다.

    1. Django 전용 DB·사용자 생성
    CREATE DATABASE myproject_db CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
    CREATE USER 'django_user'@'localhost' IDENTIFIED BY 'DjangoUserPass!123';
    GRANT ALL PRIVILEGES ON myproject_db.* TO 'django_user'@'localhost';
    FLUSH PRIVILEGES;
    EXIT;
    

    WSL(Ubuntu) 터미널에서 MySQL 설정 파일 열기

    sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
    

    맨 위에 있는 bind-address 설정을 찾으세요. 기본은 127.0.0.1 일 텐데,

    bind-address    = 127.0.0.1
    # 위의 내용을 아래와 같이 수정한다.
    bind-address    = 0.0.0.0
    
    # 그리고 Mysql재시작
    sudo service mysql restart
    
    # 제대로 바뀌었는지 확인
    sudo netstat -tlnp | grep mysqld
    
    # 출력에 `0.0.0.0:3306` 이 보이면 OK.
    
    저장하고 빠져나옴
    
    sudo service mysql restart
    sudo netstat -tlnp | grep 3306   # 0.0.0.0:3306 확인
    

    최종 확인 & 환경 변수

    mysql -u root -p
    SELECT user, host FROM mysql.user;
    SHOW DATABASES;
    
    mysql> SELECT user, host FROM mysql.user;
    +------------------+-----------+
    | user             | host      |
    +------------------+-----------+
    | debian-sys-maint | localhost |
    | django_user      | localhost |
    | mysql.infoschema | localhost |
    | mysql.session    | localhost |
    | mysql.sys        | localhost |
    | restaurant_user  | localhost |
    | root             | localhost |
    +------------------+-----------+
    
    
    mysql> SHOW DATABASES;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | myproject_db       |
    | mysql              |
    | performance_schema |
    | restaurant_db      |
    | sys                |
    +--------------------+
    

    장고에서 .env 파일에 다음 항목 추가:

    DB_NAME=restaurant_db
    DB_USER=restaurant_user
    DB_PASSWORD=DjangoUserPass!123
    DB_HOST=127.0.0.1
    DB_PORT=3306
    

    터미널에서 django_user에게 restaurant_db 접근 권한 부여

    mysql> 일때 아래와 같이 입력하여 권한 부여한다.
    
    -- 1) restaurant_db 데이터베이스에 대한 모든 권한 부여
    GRANT ALL PRIVILEGES ON restaurant_db.* TO 'django_user'@'localhost';
    
    -- 2) 권한 변경 사항 즉시 적용
    FLUSH PRIVILEGES;
    
    -- 3) SHOW GRANTS를 통해 실제로 권한이 잘 설정됐는지 확인
    SHOW GRANTS FOR 'django_user'@'localhost';
    
    # 아래와 같이 터미널에서 결과 확인
    +---------------------------------------------------------------+
    | Grants for django_user@localhost                                       |
    +---------------------------------------------------------------+
    | GRANT USAGE ON *.* TO `django_user`@`localhost`                        |
    | GRANT ALL PRIVILEGES ON `myproject_db`.* TO `django_user`@`localhost`  |
    | GRANT ALL PRIVILEGES ON `restaurant_db`.* TO `django_user`@`localhost` |
    +---------------------------------------------------------------+
    3 rows in set (0.00 sec)
    

    Python-MySQL 드라이버 설치

    pip install mysqlclient
    

    만약 mysqlclient 빌드 오류 발생 시

    sudo apt install -y default-libmysqlclient-dev build-essential
    pip install mysqlclient
    

    Django 설정 변경 (settings.py)

    import os
    from pathlib import Path
    
    BASE_DIR = Path(__file__).resolve().parent.parent
    
    DATABASES = {
        "default": {
            "ENGINE": "django.db.backends.mysql",
            "NAME": os.environ.get("DB_NAME"),
            "USER": os.environ.get("DB_USER"),
            "PASSWORD": os.environ.get("DB_PASSWORD"),
            "HOST": os.environ.get("DB_HOST"),
            "PORT": os.environ.get("DB_PORT"),
            "OPTIONS": {
    	        "charset": "utf8mb4",
    	        "init_command": "SET NAMES utf8mb4",
            }
        }
    }
    
    # 테스트 환경에서는 SQLite로 대체
    if os.environ.get("TEST"):
        DATABASES = {
            "default": {
                "ENGINE":"django.db.backends.sqlite3",
                "NAME":BASE_DIR / "db.sqlite3",
            }
        }
    

    .env 로딩을 위해 python-dotenvdjango-environ 설치/설정 확인


    WSL은 윈도우에서 DBever를 실행합니다. DBever설치 링크https://dbeaver.io/download/


    macOS

    brew install --cask dbeaver-community
    

    – 설치 후 런치패드나 Spotlight(⌘Space) 에서 “DBeaver” 실행
    – Connection 설정(MySQL: localhost, 3306, myproject_db, django_user 등) → Test → Finish

    macOS

    open -a DBeaver &
    

    앱 경로 직접 지정

    open /Applications/DBeaver.app &
    

    CLI 런처 스크립트 만들어두기 (선택)

    #!/usr/bin/env bash
    open -a DBeaver
    

    chmod +x /usr/local/bin/dbeaver
    이렇게 해두면 WSL처럼 dbeaver &로 쓰실 수도 있습니다.


    설치하기

    DBeaver와 MySQL과 연결

    왼쪽에서 restaurant_db → 오른쪽 클릭 → Edit Connection...

    터미널에서 DBeaver 실행 WSL(Ubuntu)

    # MySQL 시작
    sudo service mysql start
    
    # 상태 확인
    sudo service mysql status
    
    # MySQL 중지
    sudo service mysql stop
    

    MYSOL과 연결하기

    상단 탭에서 Driver Properties 클릭 필터에 allowPublicKeyRetrieval 검색

    • Key: allowPublicKeyRetrieval
    • Value: true

    useSSL = false 설정 추가

    전체 테이블 다이어그램 보기:

    한글로 인터페이스를 변경하기

    TOP
    preload preload